/*
 * Colores.java
 *
 * Created on 7 de julio de 2007, 09:40 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package core;

import exceptions.*;

/**
 *
 * @author juancho
 */
public class Resistencia {
    
    private Valor[] valores;
    
    /** Creates a new instance of Resistencia */
    public Resistencia(Valor... valores) throws Exception{
        if(valores.length > 4 ) throw new Exception("Valor fuera de rango");
            
        this.valores = new Valor[4];
        for(int x = 0; x < this.valores.length; x++)
            this.valores[x] = valores[x];
    }
    
    public void setValor(int p, Valor val){
        valores[p-1] = val;
    }
    
    public Valor[] getValor(){
        return valores;
    }
    
    /*
     *Obtener el valor de las resistencias dependiendo el color y la posicion
     */
    public int getValor( int p, String c ) throws ColoresException{
        if ( p == 1 || p == 2 ){
            if ( c.equals("negro") ) return 0;
            if ( c.equals("cafe") ) return 1;
            if ( c.equals("rojo") ) return 2;
            if ( c.equals("naranja") ) return 3;
            if ( c.equals("amarillo") ) return 4;
            if ( c.equals("verde") ) return 5;
            if ( c.equals("azul") )return 6;
            if ( c.equals("violeta") ) return 7;
            if ( c.equals("gris") ) return 8;
            if ( c.equals("blanco") ) return 9;
            else throw new ColoresException("Ese color no existe");
        }else if ( p == 3 ){
            if ( c.equals("negro") ) return 1;
            if ( c.equals("cafe") ) return 10;
            if ( c.equals("rojo") ) return 100;
            if ( c.equals("naranja") ) return 1000;
            if ( c.equals("amarillo") ) return 10000;
            if ( c.equals("verde") ) return 100000;
            if ( c.equals("azul") ) return 1000000;
            else throw new ColoresException("Ese color no existe");
        }else   if ( p == 4 ){
            if ( c.equals("dorado") ) return 5;
            if ( c.equals("plateado") ) return 10;
            if ( c.equals("ninguno") ) return 20;
            else throw new ColoresException("Ese color no existe");
        }
        throw new ColoresException("No hay color");
    }
    
    /*
     * Obtener la tolerancia de la resistencia
     */
    public int getTolerancia(){
       return this.valores[3].getValor();
    }
    
    public int obtenerTotal() {
        /*Strings temporales para hacer la concatenacion de valores*/
        String valt1 = new String();
        String valt2 = new String();
        String sval;
        
        Valor val1 = this.valores[0];
        Valor val2 = this.valores[1];
        Valor mult = this.valores[2];
        
        int valor1 = val1.getValor();
        int valor2 = val2.getValor();
        int multi = mult.getValor();
        
        /*Concatenar las cadenas, cambiarlas de nuevo por int y regresar el valor total*/
        sval = valt1.valueOf(valor1) + valt2.valueOf(valor2);
        int valor = Integer.parseInt(sval);
        return valor * multi;
    }
    
}
